package chapter_23.manager;

/**
 * 线程让步测试(yield() 方法)
 */
public class Thread_Yield {

    public static void main(String[] args) {

        Runnable runnable1 = () -> {

            // 编写执行线程代码
            for (int i = 0; i < 10; i++) {
                // 打印次数和线程的名字
                System.out.printf("第 %d次执行 - %s\n", i, Thread.currentThread().getName());

                /*
                线程让步
                让相同优先级或更高优先级线程先执行
                */
                Thread.yield();
            }

            // 线程执行结束
            System.out.println("执行完成! " + Thread.currentThread().getName());
        };

        Runnable runnable2 = () -> {

            // 编写执行线程代码
            for (int i = 0; i < 10; i++) {
                // 打印次数和线程的名字
                System.out.printf("第 %d次执行 - %s\n", i, Thread.currentThread().getName());

            }

            // 线程执行结束
            System.out.println("执行完成! " + Thread.currentThread().getName());
        };

        // 创建线程 t1,参数是一个线程执行对象 runnable
        Thread t1 = new Thread(runnable1);
        t1.setPriority(Thread.MIN_PRIORITY);
        // 开始线程 thread
        t1.start();

        // 创建线程 t2,参数是一个线程执行对象 runnable 和 线程名
        Thread t2 = new Thread(runnable2,"MyThread");
        t2.setPriority(Thread.MAX_PRIORITY);
        // 开始线程 thread
        t2.start();

    }
}
